`ifndef AXI_DEFINE_H
`define AXI_DEFINE_H

`define AXI_ADDR_WIDTH 32
`define AXI_DATA_WIDTH 32

typedef logic [`AXI_ADDR_WIDTH-1:0] addr_t;
typedef logic [`AXI_DATA_WIDTH-1:0] data_t;
typedef logic [(`AXI_DATA_WIDTH/8)-1:0] strb_t;
typedef logic [1:0] resp_t;

typedef enum logic [2:0] {
    S_IDLE,
    AR_WAIT,
    R_RECV
} rstate_t;

typedef enum logic [2:0] {
    S_IDLE_,
    AW_WAIT,
    W_RECV
} wstate_t;

    // Arbiter state
typedef enum logic [1:0] {
    IDLE,
    MASTER_0,
    MASTER_1
} arb_state_t;


`define OKAY 2'b00 // transfer成功
`define EXOKAY 2'b01 // transfer部分成功，发生了可恢复的错误
`define SLVERR 2'b10 // transfer不成功，发生了不可恢复的错误
`define DECERR 2'b11 // transfer失败，发生了解码错误

`endif // AXI_DEFINE_H
